/**
 * 
 */
package com.aasa.siccosap.util;

import java.util.ArrayList;
import java.util.List;

import com.aasa.siccosap.bean.CtaCteCliente;
import com.aasa.siccosap.bean.CtaCteCobranzas;
import com.aasa.siccosap.bean.CtaCteDcEmpCodEmp1;
import com.aasa.siccosap.bean.CtaCteDcEmpCodEmp2;
import com.aasa.siccosap.bean.CtaCteDocumentosDeuda;
import com.aasa.siccosap.bean.CtaCteGCodCli;
import com.aasa.siccosap.bean.CuentaClienteSaplicacionC;
import com.aasa.siccosap.bean.CuentaClienteSaplicacionSoloDeudas;

/**
 * @author franklin.bustos
 *
 */
public class UtilCargaCtaCte {
	
	public static List<CtaCteCliente> cargarLstCtaCteCliente(
			List<CuentaClienteSaplicacionC> lstCuentaClienteSaplicacionC) {
		List<CtaCteCliente> lstCtaCteCliente = new ArrayList<CtaCteCliente>();
		CtaCteCliente objCtaCteClienteAnterior = null;
		CtaCteDocumentosDeuda objCtaCteDocumentosDeudaAnterior = null;
		CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1Anterior = null;
		for(CuentaClienteSaplicacionC o:lstCuentaClienteSaplicacionC){
			CtaCteCliente objCtaCteClienteActual =
				new CtaCteCliente(o.getStrPb_codCli(),o.getStrPb_razSoc(),o.getStrPb_ruc(),o.getDblPb_tipoCambio(),
						new ArrayList<CtaCteDocumentosDeuda>());
			if(objCtaCteClienteActual.equals(objCtaCteClienteAnterior)){
				//--1--Cliente en linea es igual al anterior.
				CtaCteDocumentosDeuda objCtaCteDocumentosDeudaActual =
					new CtaCteDocumentosDeuda(o.getObjPb_fecVen(), o.getObjPb_fecEmi(), o.getStrPb_numeroManual(),
							o.getStrPb_serieManual(), o.getStrPb_desAbv(), o.getDblPb_tipCam(),
							o.getDblPb_saldoDolDocumento(), o.getDblPb_cfDp(), o.getDblPb_importeSoles(),
							o.getDblPb_importeDolares(), o.getDblPb_saldoDocumento(),
							new ArrayList<CtaCteCobranzas>(),
							new ArrayList<CtaCteDcEmpCodEmp1>());
				if(objCtaCteDocumentosDeudaActual.equals(objCtaCteDocumentosDeudaAnterior)){
					//--2--DocumentosDeuda en linea es igual al anterior.
					CtaCteCobranzas objCtaCteCobranzasActual =
						new CtaCteCobranzas(o.getStrPb_numDocRefer(), o.getStrPb_serieDocRefer(),
								o.getStrPb_descTipoDocRefer(), o.getDblPb_pagoDolares(), o.getDblPb_pagoSoles(),
								o.getStrPb_numManNc(), o.getStrPb_serManNc(), o.getStrPb_descTipoDocPagado(),
								o.getObjPb_fecPag(), o.getDblPb_tipCamMon());
					objCtaCteDocumentosDeudaActual.getLstCobranzas().add(objCtaCteCobranzasActual);
					CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1Actual =
						new CtaCteDcEmpCodEmp1(o.getDblPb_cfOtraMoneda(), o.getDblPb_impPerSol(),
								o.getObjPb_tc1Fecha1(), o.getStrPb_cfDocPer(), o.getStrPb_cfTipoDocumento(),
								o.getObjPb_fecPag1(), new ArrayList<CtaCteDcEmpCodEmp2>());
					if(objCtaCteDcEmpCodEmp1Actual.equals(objCtaCteDcEmpCodEmp1Anterior)){
						//--3--DcEmpCodEmp1 en linea es igual al anterior.
						CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2Actual =
							new CtaCteDcEmpCodEmp2(o.getStrPb_cfNumManNc(), o.getStrPb_cfDescTipDocPagado(),
									o.getStrPb_cfSerManNc(), o.getObjPb_fecPag2(), o.getDblPb_cfPagoDolares(),
									o.getDblPb_cfPagoSoles());
						objCtaCteDcEmpCodEmp1Anterior.getLstCobranzas().add(objCtaCteDcEmpCodEmp2Actual);
					}else{
						//--3--DcEmpCodEmp1 en linea es nuevo.
						CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2Actual =
							new CtaCteDcEmpCodEmp2(o.getStrPb_cfNumManNc(), o.getStrPb_cfDescTipDocPagado(),
									o.getStrPb_cfSerManNc(), o.getObjPb_fecPag2(), o.getDblPb_cfPagoDolares(),
									o.getDblPb_cfPagoSoles());
						objCtaCteDcEmpCodEmp1Actual.getLstCobranzas().add(objCtaCteDcEmpCodEmp2Actual);
					}
					objCtaCteDcEmpCodEmp1Anterior = objCtaCteDcEmpCodEmp1Actual;
					objCtaCteDocumentosDeudaAnterior.getLstDcEdEmpCodEmp1().add(objCtaCteDcEmpCodEmp1Actual);
				}else{
					//--2--DocumentosDeuda en linea es nuevo.
					CtaCteCobranzas objCtaCteCobranzasActual =
						new CtaCteCobranzas(o.getStrPb_numDocRefer(), o.getStrPb_serieDocRefer(),
								o.getStrPb_descTipoDocRefer(), o.getDblPb_pagoDolares(), o.getDblPb_pagoSoles(),
								o.getStrPb_numManNc(), o.getStrPb_serManNc(), o.getStrPb_descTipoDocPagado(),
								o.getObjPb_fecPag(), o.getDblPb_tipCamMon());
					objCtaCteDocumentosDeudaActual.getLstCobranzas().add(objCtaCteCobranzasActual);
					CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1Actual =
						new CtaCteDcEmpCodEmp1(o.getDblPb_cfOtraMoneda(), o.getDblPb_impPerSol(),
								o.getObjPb_tc1Fecha1(), o.getStrPb_cfDocPer(), o.getStrPb_cfTipoDocumento(),
								o.getObjPb_fecPag1(), new ArrayList<CtaCteDcEmpCodEmp2>());
					CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2Actual =
						new CtaCteDcEmpCodEmp2(o.getStrPb_cfNumManNc(), o.getStrPb_cfDescTipDocPagado(),
								o.getStrPb_cfSerManNc(), o.getObjPb_fecPag2(), o.getDblPb_cfPagoDolares(),
								o.getDblPb_cfPagoSoles());
					objCtaCteDcEmpCodEmp1Actual.getLstCobranzas().add(objCtaCteDcEmpCodEmp2Actual);
					objCtaCteDcEmpCodEmp1Anterior = objCtaCteDcEmpCodEmp1Actual;
					objCtaCteDocumentosDeudaActual.getLstDcEdEmpCodEmp1().add(objCtaCteDcEmpCodEmp1Actual);
					objCtaCteDocumentosDeudaAnterior = objCtaCteDocumentosDeudaActual;
				}
				objCtaCteClienteAnterior.getLstDocumentosDeuda().add(objCtaCteDocumentosDeudaActual);
			}else{
				//--1--Cliente en linea es nuevo.
				CtaCteDocumentosDeuda objCtaCteDocumentosDeudaActual =
					new CtaCteDocumentosDeuda(o.getObjPb_fecVen(), o.getObjPb_fecEmi(), o.getStrPb_numeroManual(),
							o.getStrPb_serieManual(), o.getStrPb_desAbv(), o.getDblPb_tipCam(),
							o.getDblPb_saldoDolDocumento(), o.getDblPb_cfDp(), o.getDblPb_importeSoles(),
							o.getDblPb_importeDolares(), o.getDblPb_saldoDocumento(),
							new ArrayList<CtaCteCobranzas>(),
							new ArrayList<CtaCteDcEmpCodEmp1>());
				CtaCteCobranzas objCtaCteCobranzasActual =
					new CtaCteCobranzas(o.getStrPb_numDocRefer(), o.getStrPb_serieDocRefer(),
							o.getStrPb_descTipoDocRefer(), o.getDblPb_pagoDolares(), o.getDblPb_pagoSoles(),
							o.getStrPb_numManNc(), o.getStrPb_serManNc(), o.getStrPb_descTipoDocPagado(),
							o.getObjPb_fecPag(), o.getDblPb_tipCamMon());
				objCtaCteDocumentosDeudaActual.getLstCobranzas().add(objCtaCteCobranzasActual);
				CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1Actual =
					new CtaCteDcEmpCodEmp1(o.getDblPb_cfOtraMoneda(), o.getDblPb_impPerSol(),
							o.getObjPb_tc1Fecha1(), o.getStrPb_cfDocPer(), o.getStrPb_cfTipoDocumento(),
							o.getObjPb_fecPag1(), new ArrayList<CtaCteDcEmpCodEmp2>());
				CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2Actual =
					new CtaCteDcEmpCodEmp2(o.getStrPb_cfNumManNc(), o.getStrPb_cfDescTipDocPagado(),
							o.getStrPb_cfSerManNc(), o.getObjPb_fecPag2(), o.getDblPb_cfPagoDolares(),
							o.getDblPb_cfPagoSoles());
				objCtaCteDcEmpCodEmp1Actual.getLstCobranzas().add(objCtaCteDcEmpCodEmp2Actual);
				objCtaCteDcEmpCodEmp1Anterior = objCtaCteDcEmpCodEmp1Actual;
				objCtaCteDocumentosDeudaActual.getLstDcEdEmpCodEmp1().add(objCtaCteDcEmpCodEmp1Actual);
				objCtaCteDocumentosDeudaAnterior = objCtaCteDocumentosDeudaActual;
				objCtaCteClienteActual.getLstDocumentosDeuda().add(objCtaCteDocumentosDeudaActual);
				objCtaCteClienteAnterior = objCtaCteClienteActual;
			}
		}
		return lstCtaCteCliente;
	}
	
	public static CtaCteGCodCli cargarObjCtaCteGCodCli(
			CuentaClienteSaplicacionSoloDeudas objCuentaClienteSaplicacionSoloDeudas) {
		/*
		List<CtaCteGCodCli> lstCtaCteGCodCli = new ArrayList<CtaCteGCodCli>();
		CtaCteGCodCli objCtaCteGCodCliAnterior = null;
		CtaCteDocumentosDeuda objCtaCteDocumentosDeudaAnterior = null;
		CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1Anterior = null;
		for(CuentaClienteSaplicacionSoloDeudas o:objCuentaClienteSaplicacionSoloDeudas.getListaClientesSinAplicacionDeudasPrincipal()){
			CtaCteGCodCli objCtaCteGCodCliActual =
				new CtaCteGCodCli(o.getCodCli(),o.getRazSoc(),o.getRuc(),o.getTipoCambio(),
						new ArrayList<CtaCteDocumentosDeuda>());
			if(objCtaCteGCodCliActual.equals(objCtaCteGCodCliAnterior)){
				//--1--Cliente en linea es igual al anterior.
				CtaCteDocumentosDeuda objCtaCteDocumentosDeudaActual =
					new CtaCteDocumentosDeuda(o.getFecVen(), o.getFecEmi(), o.getNumeroManual(),
							o.getSerieManual(), o.getDesAbv(), o.getTipCam(),
							o.getSaldoDolDocumento(), o.getCfDp(), o.getImporteSoles(),
							o.getImporteDolares(), o.getSaldoDocumento(),
							new ArrayList<CtaCteCobranzas>(),
							new ArrayList<CtaCteDcEmpCodEmp1>());
				if(objCtaCteDocumentosDeudaActual.equals(objCtaCteDocumentosDeudaAnterior)){
					//--2--DocumentosDeuda en linea es igual al anterior.
					CtaCteCobranzas objCtaCteCobranzasActual =
						new CtaCteCobranzas(o.getNumDocRefer(), o.getSerieDocRefer(),
								o.getDescTipoDocRefer(), o.getPagoDolares(), o.getPagoSoles(),
								o.getNumManNc(), o.getSerManNc(), o.getDescTipoDocPagado(),
								o.getFecPag(), o.getTipCamMon());
					objCtaCteDocumentosDeudaActual.getLstCobranzas().add(objCtaCteCobranzasActual);
					CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1Actual =
						new CtaCteDcEmpCodEmp1(o.getCfOtraMoneda(), o.getImpPerSol(),
								o.getTc1Fecha1(), o.getCfDocPer(), o.getCfTipoDocumento(),
								o.getFecPag1(), new ArrayList<CtaCteDcEmpCodEmp2>());
					if(objCtaCteDcEmpCodEmp1Actual.equals(objCtaCteDcEmpCodEmp1Anterior)){
						//--3--DcEmpCodEmp1 en linea es igual al anterior.
						CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2Actual =
							new CtaCteDcEmpCodEmp2(o.getCfNumManNc(), o.getCfDescTipDocPagado(),
									o.getCfSerManNc(), o.getFecPag2(), o.getCfPagoDolares(),
									o.getCfPagoSoles());
						objCtaCteDcEmpCodEmp1Anterior.getLstCobranzas().add(objCtaCteDcEmpCodEmp2Actual);
					}else{
						//--3--DcEmpCodEmp1 en linea es nuevo.
						CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2Actual =
							new CtaCteDcEmpCodEmp2(o.getCfNumManNc(), o.getCfDescTipDocPagado(),
									o.getCfSerManNc(), o.getFecPag2(), o.getCfPagoDolares(),
									o.getCfPagoSoles());
						objCtaCteDcEmpCodEmp1Actual.getLstCobranzas().add(objCtaCteDcEmpCodEmp2Actual);
					}
					objCtaCteDcEmpCodEmp1Anterior = objCtaCteDcEmpCodEmp1Actual;
					objCtaCteDocumentosDeudaAnterior.getLstDcEdEmpCodEmp1().add(objCtaCteDcEmpCodEmp1Actual);
				}else{
					//--2--DocumentosDeuda en linea es nuevo.
					CtaCteCobranzas objCtaCteCobranzasActual =
						new CtaCteCobranzas(o.getNumDocRefer(), o.getSerieDocRefer(),
								o.getDescTipoDocRefer(), o.getPagoDolares(), o.getPagoSoles(),
								o.getNumManNc(), o.getSerManNc(), o.getDescTipoDocPagado(),
								o.getFecPag(), o.getTipCamMon());
					objCtaCteDocumentosDeudaActual.getLstCobranzas().add(objCtaCteCobranzasActual);
					CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1Actual =
						new CtaCteDcEmpCodEmp1(o.getCfOtraMoneda(), o.getImpPerSol(),
								o.getTc1Fecha1(), o.getCfDocPer(), o.getCfTipoDocumento(),
								o.getFecPag1(), new ArrayList<CtaCteDcEmpCodEmp2>());
					CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2Actual =
						new CtaCteDcEmpCodEmp2(o.getCfNumManNc(), o.getCfDescTipDocPagado(),
								o.getCfSerManNc(), o.getFecPag2(), o.getCfPagoDolares(),
								o.getCfPagoSoles());
					objCtaCteDcEmpCodEmp1Actual.getLstCobranzas().add(objCtaCteDcEmpCodEmp2Actual);
					objCtaCteDcEmpCodEmp1Anterior = objCtaCteDcEmpCodEmp1Actual;
					objCtaCteDocumentosDeudaActual.getLstDcEdEmpCodEmp1().add(objCtaCteDcEmpCodEmp1Actual);
					objCtaCteDocumentosDeudaAnterior = objCtaCteDocumentosDeudaActual;
				}
				objCtaCteGCodCliAnterior.getLstDocumentosDeuda().add(objCtaCteDocumentosDeudaActual);
			}else{
				//--1--Cliente en linea es nuevo.
				CtaCteDocumentosDeuda objCtaCteDocumentosDeudaActual =
					new CtaCteDocumentosDeuda(o.getFecVen(), o.getFecEmi(), o.getNumeroManual(),
							o.getSerieManual(), o.getDesAbv(), o.getTipCam(),
							o.getSaldoDolDocumento(), o.getCfDp(), o.getImporteSoles(),
							o.getImporteDolares(), o.getSaldoDocumento(),
							new ArrayList<CtaCteCobranzas>(),
							new ArrayList<CtaCteDcEmpCodEmp1>());
				CtaCteCobranzas objCtaCteCobranzasActual =
					new CtaCteCobranzas(o.getNumDocRefer(), o.getSerieDocRefer(),
							o.getDescTipoDocRefer(), o.getPagoDolares(), o.getPagoSoles(),
							o.getNumManNc(), o.getSerManNc(), o.getDescTipoDocPagado(),
							o.getFecPag(), o.getTipCamMon());
				objCtaCteDocumentosDeudaActual.getLstCobranzas().add(objCtaCteCobranzasActual);
				CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1Actual =
					new CtaCteDcEmpCodEmp1(o.getCfOtraMoneda(), o.getImpPerSol(),
							o.getTc1Fecha1(), o.getCfDocPer(), o.getCfTipoDocumento(),
							o.getFecPag1(), new ArrayList<CtaCteDcEmpCodEmp2>());
				CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2Actual =
					new CtaCteDcEmpCodEmp2(o.getCfNumManNc(), o.getCfDescTipDocPagado(),
							o.getCfSerManNc(), o.getFecPag2(), o.getCfPagoDolares(),
							o.getCfPagoSoles());
				objCtaCteDcEmpCodEmp1Actual.getLstCobranzas().add(objCtaCteDcEmpCodEmp2Actual);
				objCtaCteDcEmpCodEmp1Anterior = objCtaCteDcEmpCodEmp1Actual;
				objCtaCteDocumentosDeudaActual.getLstDcEdEmpCodEmp1().add(objCtaCteDcEmpCodEmp1Actual);
				objCtaCteDocumentosDeudaAnterior = objCtaCteDocumentosDeudaActual;
				objCtaCteGCodCliActual.getLstDocumentosDeuda().add(objCtaCteDocumentosDeudaActual);
				objCtaCteGCodCliAnterior = objCtaCteGCodCliActual;
			}
		}
		return lstCtaCteGCodCli;
		*/
		return null;
	}
	
}
